perm filename EP234[E,ALS] blob sn#151488 filedate 1975-03-27 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	SPOOLC:	OUTSTR [ASCIZ /
C00008 ENDMK
C⊗;
;SPOOLC:	OUTSTR [ASCIZ /
;This command has not yet been implemented.  The intent is to provide
;a fast way to spool a single page of a large file without leaving ETV.
;/]
	AOS(P)
	POPJ P,

EXTERN	SPALL

IMPURE
SPOOLD:	BLOCK 21

PURE
SPOOLC:	MOVE T,EDFIL
	MOVEM T,SPOOLD+7	;Start with first cha. of real name
	MOVE T,CURPAG
	MOVE A,[POINT 6,SPOOLD+7,5]	;Use 1 character of name
	PUSHJ P,NUMSIX			;Add the page number
	MOVEI TT,'$'
	SKIPA
	IDPB TT,A
	TLNE A,760000
	JRST .-2		;Fill out with '$' characters
	MOVEI T,'LPT'
	HRLZM T,SPOOLD+10	;Six-bit file extension of source
	SETZM SPOOLD+11
	MOVE T,['SPLSYS']
	MOVEM T,SPOOLD+12	;Six-bit PPN of file 
	MOVE T,EDFIL
	MOVEM T,SPOOLD+13	;Alias name in six-bit
	MOVE T,EDFIL+1
	MOVEM T,SPOOLD+14	;Alias extension in six-bit
	MOVE T,EDFIL+2
	MOVEM T,SPOOLD+15	;Alias PPN in six-bit
	MOVE T,CURPAG
	HRLM T,SPOOLD+16	;Page number in left half
	MOVEI T,21
	HRRM T,SPOOLD+16	;Flags to print headings and delete file
	SETZM SPOOLD+17
	SETZM SPOOLD+20

	OPEN DSKSP,[17↔'DSK   '↔0]
	JRST 4,.
	MOVE TT,20		;Limit times to try
SPOOLL:	LOOKUP DSKSP,SPOOLD+7
	JRST SPOOLW		;Safe to use this name
	CLOSE DSKSP,
	MOVEI T,1
	ADDM T,SPOOLD+7
	SOJG TT,SPOOLL
SPOOLE:	OUTSTR [ASCIZ /
Something is wrong with the spooler. Try again later.
/]
	AOS (P)
	POPJ P,

SPOOLW:	MOVE T,['SPLSYS']
	MOVEM T,SPOOLD+12	;Six-bit PPN of file 
	ENTER DSKSP,SPOOLD+7
	JRST SPOOLE

	SETZM OBLK
	PUSHJ P,XWRBF2		;To set up 0CNT and 0PNT for first load
	MOVE T,[OBUF-1,,OBUF]
	BLT T,OBUF+177		;Clear buffer
	MOVEI A,PAGE
	MOVEI DSP,XWRDSP
	MOVSI E,LSPC+NSPEC
	MOVE G,OPNT
	MOVN B,OCNT
	MOVSI B,(B)


XWRP1:	MOVEI C,14
	IDPB C,G
	AOBJN B,XWRLIN
	PUSHJ P,XWRBUF
	MOVE G,OPNT
	MOVN B,OCNT
	MOVSI B,(B)
XWRLIN:	HRRZ A,(A)
	CAIN A,BOTSTR
	JRST XWRDON
	SKIPGE T,1(A)
	JRST XWRPM
	MOVEI D,LLDESC(A)
	TRNN T,777
	TLOA D,350700
	HRLI D,440700
	HRRI B,
XWRLUP:	ILDB C,D
	TDNE E,CTAB(C)
	XCT @CTAB(C)
	IDPB C,G
XWRLP2:	AOBJN B,XWRLUP
	PUSHJ P,XWRBUF
	MOVE G,OPNT
	MOVN T,OCNT
	HRLI B,(T)
	JRST XWRLUP


XWRDSP:	JRST XWRLIN
	JRST 4,.
	JFCL
	MOVEI D,	;KILL NEXT ILDB
	JRST XWRTAB
	JRST 4,.
	JRST 4,.

XWRTAB:	IDPB C,G
	HRROI C,-10
	IORI C,(B)
	SUB B,C
	ADD D,BTAB2+10(C)
	JUMPGE D,.+2
	ADD D,[XOR 1]
	SOJA B,XWRLP2

XCLOSO:	MOVE D,OPNT
	CAMN D,[700,,OBUF-1]
	POPJ P,
	TDZA T,T
	IDPB T,D
	TLNE D,760000
	JRST .-2
	HRLI D,1(D)
	ADDI D,2
	CAMG D,[OBUF+177,,OBUF+200]
	SETZM -1(D)
	CAMGE D,[OBUF+177,,OBUF+200]
	BLT D,OBUF+177
XWRBUF:	OUT DSKSP,[-200,,OBUF-1↔0]
XWRBF1:	AOSA OBLK
	JRST 4,.
XWRBF2:	PUSH P,T
	MOVEI T,200*5
	MOVEM T,OCNT#
	MOVE T,[700,,OBUF-1]
	MOVEM T,OPNT#
	MOVE T,[OBUF-1,,OBUF]
	TLNE F,CLRBF
	BLT T,OBUF+177
	POP P,T
	POPJ P,


XWRDON:
	MOVEM G,OPNT
	PUSHJ P,XCLOSO
	CLOSE DSKSP,
	POPJ P,			;SOME MORE COES IN HERE

XWRPM:	HRRZ B,-1(P)
	MOVN T,1(B)
	PUSHJ P,WRCHK
	LDB C,[341000,,LLDESC+LPMTXT+1(A)]
	IMULI C,200*5
	LDB E,[221200,,LLDESC+LPMTXT+1(A)]
	ADDI C,(E)
	CAIE T,(C)
	JRST 4,.
	MOVEM G,OPNT
	PUSHJ P,XCLOSO
	MOVE T,-1(P)
	HRRZ T,(T)
	MOVE C,OBLK
	CAME C,1(T)
	JRST 4,.
	MOVEM T,-1(P)
	MOVE G,OPNT
	MOVN B,OCNT
	MOVSI B,(B)
	MOVSI E,LSPC+NSPEC
	JRST XWRP1


	PUSHJ P,SPALL
	JUMP SPOOLD